<!-- <template>
	<view >
		<slot></slot>
	</view>
</template> -->
<script>
	import {
		toast,
		clearStorageSync,
		getStorageSync,
		useRouter
	} from '@/utils/utils.js'
	import systemConfig from '@/config/config.js';
	import imSupport from './utils/imSupport';

	export default {
		data() {
			return {
				engine: null,
				userInfo: {},
			}
		},
		computed: {
			
		},
		methods: {
			initIM: async function(){
				let that = this
				await imSupport.initIMEngine()
				// 获取imtoken
				this.$api.getIMToken().then(res => {
					if (res.success) {
						uni.setStorageSync("imToken", res.result)
						imSupport.initConnect(res.result)
					} else {
						uni.removeStorageSync("imToken")
					}
				}).catch(err => {
					console.log('getIMToken error', err)
					uni.removeStorageSync("imToken")
				})
				
				uni.$on('changeIMStatus', function(data) {
					console.log('监听到事件来自 changeIMStatus ，携带参数为：' + data);
					that.changeIMStatus(data)
				})
			},
			changeIMStatus: function(status) {
				this.$api.changeIMUserStatus({
					'userId': this.$commonData.imUserId(),
					'userStatus': status
				}).then(res => {
					if (res.success) {
						console.log("修改IM用户状态成功...")
					} else {
						console.log('changeIMStatus error', res.message)
					}
				}).catch(function(err) {
					console.log('changeIMStatus error', err)
				}).finally(() => {})
			},
		},
		onLoad() {
			let that = this
			uni.$off('initIM')
			uni.$off('destoryIM')
			uni.$on('initIM', ()=> {
				console.log('initIM...')
				that.initIM()
			})
			uni.$on('destoryIM', ()=> {
				imSupport.destory()
			})
		},
		onLaunch: function() {
			console.log('App Launch')
			// 生命周期回调 监听应用初始化
			// 应用初始化完成时触发，全局只触发一次。
			let systemInfo = uni.getSystemInfoSync()
			console.log('systemInfo', systemInfo)
			// #ifdef APP-PLUS
			const data = {
				appId: systemInfo.appId,
				version: systemInfo.appVersion
			}
			//把appid和版本发送请求服务器，看服务器上是否有更新	
			this.$api.checkVersion(data).then(res => {
				if (res.success) {
					//如果返回0则表示有更新
					appUpdate(res.result)
				}
			}).catch(error => {
				console.log('checkVersion error', error)
			})
			// #endif

			let token = uni.getStorageSync(systemConfig.token)
			console.log('App Launch token', token)
			if (token == null || token == '' || token == undefined) {
				setTimeout(() => {
					uni.reLaunch({
						url: systemConfig.login_page
					})
				}, 500)
			} else {
				// 初始化融云
				this.initIM()
			}
		},

		onShow: function(options) {
			console.log('App Show')
			console.log('应用启动路径：', options.path)
			// 当 uni-app 启动，或从后台进入前台显示
			// #ifdef MP-WEIXIN
			// 当向小程序后台请求完新版本信息，会进行回调。res: {hasUpdate: true, version: 1.0.0}
			const updateManager = uni.getUpdateManager();
			updateManager.onCheckForUpdate(function(res) {
				console.log('onCheckForUpdate', res)
				if (res.hasUpdate) { // 有更新
					uni.showLoading({
						title: '更新中...'
					}); // 开始下载前，显示Loading
				}
			});
			// 当新版本下载完成，会进行回调
			updateManager.onUpdateReady(function() {
				uni.hideLoading(); // 关闭 Loading 
				uni.showModal({ // 弹确认框（强制更新）
					title: '更新提示',
					content: '更新完毕，是否重启？',
					success: function(res) {
						if (res.confirm) {
							updateManager.applyUpdate(); // 强制小程序重启并使用新版本。
						}
					}
				})
			});
			// 当新版本下载失败，会进行回调
			updateManager.onUpdateFailed(function() {
				uni.hideLoading(); // 关闭 Loading 
				uni.showToast({
					title: '更新失败，稍后再试...',
					icon: "error"
				});
			});
			// #endif
		},
		onHide: function() {
			//当 uni-app 从前台进入后台
			console.log('App onHide')
		},
		onThemeChange: function(options) {
			console.log('onThemeChange', options)
		},
		onExit: function() {
			//监听应用退出
			console.log('onExit')
		},
		beforeDestroy() {
			imSupport.destory()
		}
	}
</script>

<style lang="scss">
	/*每个页面公共css */
	@import '@/uni.scss';
	@import "@/static/index.scss";
</style>